package com.wgh.pay.service;

import com.wgh.pay.entity.ReconciliationResult;
import com.wgh.pay.vo.ReconciliationReportVO;
import com.wgh.common.vo.PageResult;

import java.util.Date;
import java.util.Map;

/**
 * 支付对账服务接口
 */
public interface ReconciliationService {

    /**
     * 执行支付对账
     * @param reconciliationDate 对账日期
     * @param payType 支付方式（可选，null表示所有支付方式）
     * @return 对账结果
     */
    ReconciliationResult reconcile(Date reconciliationDate, Integer payType);

    /**
     * 查询对账记录
     * @param params 查询参数
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 对账记录分页结果
     */
    PageResult<ReconciliationResult> queryReconciliationRecords(Map<String, Object> params, Integer pageNum, Integer pageSize);

    /**
     * 获取对账报表
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param payType 支付方式（可选，null表示所有支付方式）
     * @return 对账报表
     */
    ReconciliationReportVO generateReconciliationReport(Date startDate, Date endDate, Integer payType);

    /**
     * 手动补录对账差异
     * @param orderId 订单ID
     * @param status 处理状态
     * @param remark 备注
     * @return 处理结果
     */
    boolean handleReconciliationDiff(Long orderId, Integer status, String remark);

    /**
     * 导出对账数据
     * @param reconciliationDate 对账日期
     * @param payType 支付方式
     * @return 导出文件路径
     */
    String exportReconciliationData(Date reconciliationDate, Integer payType);

    /**
     * 自动对账任务（定时任务调用）
     */
    void autoReconciliationTask();
}